#include <stdio.h>
/*注意：
**1. int (*pz)[2];  //()的运算优先级大于[]，*先于pz结合，因此声明的是一个指向数组（内含两个int类型的值）的指针。
**2. int *pz[2];    //[]的运算优先级高于*，先与pax结合，所以pz成为一个内含两个元素的数组，然后*表示pz数组内含两个指针。
*/
int main(void){

    int zippo[4][2] = { {2,4},
                        {6,8},
                        {1,3},
                        {5,7} };
    int (*pz)[2];
    pz = zippo;

    printf(" pz = %p, pz+1 = %p\n",pz,pz+1);
    printf(" pz[0] = %p, pz[0]+1 = %p\n",pz[0],pz[0]+1);
    printf(" *pz = %p, *pz+1 = %p\n",*pz,*pz+1);
    printf(" pz[0][0] = %d\n",pz[0][0]);
    printf(" *pz[0] = %d\n",*pz[0]);
    printf(" **pz = %d\n",**pz);
    printf(" pz[2][1] = %d\n",pz[2][1]);
    //数组可以用指针访问，ar[i] == *（ar+i），所以 *（pz+2）== pz[2],pz[2]是一个占用1个int大小的对象
    //zippo[m][n] == *(*(zippo+m)+n)
    printf(" *(pz+2) = %p, *(*(pz+2)+1) = %d\n",*(pz+1),*(*(pz +2)+1));


    return 0;
}

